/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package simhya.simengine;
import simhya.dataprocessing.DataCollector;
import simhya.model.flat.FlatModel;
import simhya.simengine.ProgressMonitor;


/**
 *
 * @author Luca
 */
public interface Simulator {

     
    /**
     * sets the initial time of the simulation
     * @param time
     */
    public void setInitialTime(double time);
    /**
     * Sets the final time of the simulation
     * @param time
     */
    public void setFinalTime(double time);
    //public void setFinalTime(TerminationCondition termination);
    public void setProgressMonitor(ProgressMonitor monitor);
    public void useChache(boolean useChache);
    public void initialize();
    public void reinitialize();
    public void resetModel();
    public void reset(DataCollector dc);
    public void run();
    /**
     *
     * @return the last simulation time in milliseconds
     */
    public double getLastSimulationTimeInSecs();
    public double getLastSimulationTimeInMillisecs();
    public long getLastSimulationSteps();
   
    
}
